// pages/register/register.js
import http from '../../utils/request';  // ✅ 导入封装后的请求模块

Page({
  data: {
    formValues: {
      employee_number: '',
      name: '',
      password: '',
    },
    showPassword: false,
    showRegisterModal: true,  // 控制注册卡片显示
    isAgreed: false,          // 复选框状态
    hire_date: ''             // 入职日期
  },

  // ====================== 页面交互方法 ======================
  // 打开注册卡片
  openRegisterModal() {
    this.setData({ showRegisterModal: true });
  },

  // 关闭模态框方法（带确认提示）
  closeRegisterModal: function() {
    wx.showModal({
      title: '确认关闭',
      content: '输入的内容将不会被保存',
      confirmText: '确定',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          wx.switchTab({
            url: '/pages/home/home',
            success: () => {
              this.setData({ showRegisterModal: false })
            }
          })
        }
      }
    })
  },

  // 统一跳转方法（优化版）
  navigateToUserPage() {
    wx.navigateBack({
      delta: 1,
      success: () => {
        wx.switchTab({
          url: '/pages/user/user',
          success: () => {
            console.log('[DEBUG] 跳转成功')
            this.setData({ 
              showRegisterModal: false,
              hire_date: '',
              isAgreed: false
            })
          }
        })
      }
    })
  },

  // 切换复选框状态
  toggleAgreement() {
    this.setData({ isAgreed: !this.data.isAgreed });
  },

  // 日期选择器变化事件
  bindDateChange(e) {
    this.setData({ hire_date: e.detail.value });
  },

  // ====================== 核心业务逻辑 ======================
  // 提交表单（完整改造版）
  handleSubmit: function(e) {
    const formData = e.detail.value;
    console.log("表单数据:", formData);

    // ✅ 增强输入校验（处理空白字符）
    if (!formData.employee_number?.trim() || 
        !formData.name?.trim() || 
        // !this.data.hire_date || 
        !formData.password?.trim()) {
      wx.showToast({ title: '请填写必填字段', icon: 'none' });
      return;
    }

    wx.showLoading({ title: '注册中...', mask: true })

    // ✅ 构建符合后端要求的请求数据
    const requestData = {
      employee_number: formData.employee_number.trim(),
      name: formData.name.trim(),
      password: formData.password.trim(),  // 注意：实际项目需要加密处理
      hire_date: this.data.hire_date
    };

    // ====================== 注册接口改造 ======================
    http.post('/register', requestData, {
      needLoading: false  // 手动控制loading状态
    })
    .then(res => {
      console.log('[DEBUG] 服务器响应:', res)
      wx.hideLoading()

      // ✅ 标准化响应处理（拦截器已处理数据结构）
      if (res?.status === 'success') {
        // 存储用户信息到本地缓存
        wx.setStorageSync('userInfo', {
          name: res.data.name,          // ✅ 注意字段路径变化
          token: res.data.token,
          employee_number: res.data.employee_number
        })

        // 更新全局token状态
        getApp().globalData.token = res.data.token

        // 显示成功提示
        wx.showModal({
          title: '注册成功',
          content: '点击确认返回个人中心',
          confirmText: '确定',
          showCancel: false,
          success: (modalRes) => {
            if (modalRes.confirm) {
              this.navigateToUserPage()
            }
          }
        })
      } else {
        // ✅ 显示服务端返回的具体错误信息
        wx.showToast({ 
          title: res?.message || '注册失败', 
          icon: 'none',
          duration: 2000 
        });
      }
    })
    .catch(err => {
      wx.hideLoading()
      // ✅ 显示具体错误信息（拦截器已处理）
      wx.showToast({ 
        title: err.message || '注册失败', 
        icon: 'none',
        duration: 2000 
      });
      console.error('[ERROR] 完整错误信息:', err);
    });
  },

  // ====================== 登录功能改造 ======================
  handleLogin: function() {
    const { employee_number, name, password } = this.data.formValues;

    // ✅ 增强输入校验（处理空白字符）
    if (!employee_number?.trim() || !name?.trim() || !password?.trim()) {
      wx.showToast({ title: '请填写完整登录信息', icon: 'none' });
      return;
    }

    wx.showLoading({ title: '登录中...', mask: true });

    // ====================== 登录接口改造 ======================
    http.post('/login', {
      employee_number: employee_number.trim(),
      name: name.trim(),
      password: password.trim()  // 注意：实际项目需要加密处理
    }, {
      needLoading: false  // 手动控制loading状态
    })
    .then(res => {
      wx.hideLoading();
      
      // ✅ 标准化响应处理
      if (res?.status === 'success' && res.data?.token) {
        // 存储用户信息到本地缓存
        wx.setStorageSync('userInfo', {
          token: res.data.token,
          name: res.data.name,            // ✅ 注意字段路径变化
          employee_number: res.data.employee_number,
          employee_id: res.data.employee_id
        });

        // 更新全局token状态
        getApp().globalData.token = res.data.token

        wx.showToast({ title: '登录成功' });
        this.navigateToUserPage();
      } else {
        // ✅ 显示服务端返回的具体错误信息
        wx.showToast({ 
          title: res?.message || '登录失败', 
          icon: 'none',
          duration: 2000 
        });
      }
    })
    .catch(err => {
      wx.hideLoading();
      // ✅ 显示具体错误信息（拦截器已处理）
      wx.showToast({ 
        title: err.message || '登录失败', 
        icon: 'none',
        duration: 2000 
      });
    });
  },

  // ====================== 辅助方法 ======================
  // 输入变化监听
  onInputChange: function(e) {
    const field = e.currentTarget.dataset.field;
    console.log("输入数据:", field);
    this.setData({
      [`formValues.${field}`]: e.detail.value
    });
  },

  // 密码可见性切换
  togglePasswordShow() {
    this.setData({ 
      showPassword: !this.data.showPassword 
    })
  }
});